package ru.compft.web.beans.table;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import ru.compft.common.data.Setting;

import java.io.Serializable;
import java.util.List;

/**
 * User: ASUS
 * Date: 02.08.12
 * Time: 21:37
 * Бин представляющий таблицу настроек системы
 * Расширяет функционал постраничника
 */
//@Component("systemPropsTableBean")
//@Scope("request")
public class SystemPropsTableBean extends PaginationBean implements Serializable {
    private static final long serialVersionUID = 7113586962264448868L;

    private static final Logger logger = LoggerFactory.getLogger(SystemPropsTableBean.class);

    public SystemPropsTableBean() {
        // Получаем количество записей на странице при создании бина
//        final SystemService systemService = (SystemService) FacesUtils.getSpringBean(WebConst.SYSTEM_SERVICE);
//        setRecordsPerPage(systemService.maxRecordsPerPage());
    }

    /**
     * Список модулей для вывода на текущей странице
     *
     * @return
     */
    @Override
    public List getRecords() {
        // Получаем номер страницы через Request, из его Query параметра
//        final ServletRequest servletRequest = (ServletRequest) FacesUtils.getExternalContext().getRequest();
//        final String pageParam = servletRequest.getParameter(PAGE_PARAM);
//
//        if (logger.isDebugEnabled()) {
//            logger.debug("Try get setting list for page = " + pageParam);
//        }
//
//        // Если параметра нет, то возвращаем 1-ю страницу.
//        int currentPage = currentPageValidNumber(pageParam);
//
//        if (logger.isDebugEnabled()) {
//            logger.debug("Set current page = " + currentPage);
//        }
//
//        // устанавливаем номер страницы в бин
//        setCurrentPage(currentPage);
//
//        // получаем количество записей на странице
//        final int recordsPerPage = getRecordsPerPage();
//
//        // считаем начальный индекс - номер страницы умноженный на максимальное количество записей на странице
//        // минус 1 делаем потому. что это индекс начала страницы
//        final int fromIndex = (currentPage - 1) * recordsPerPage;
//        return getSettings(fromIndex, recordsPerPage);
        return null;
    }

    /**
     * Список заданного количества записей от определенного индекса
     *
     * @param from  - индекс начала
     * @param count - количества записей
     * @return
     */
    private List<Setting> getSettings(int from, int count) {
//        if (logger.isDebugEnabled()) {
//            logger.debug("Try getting '" + count + "' settings from '" + from + "' index");
//        }
//
//        // получаем сервис работы с настройками
//        final SystemService systemService = (SystemService) FacesUtils.getSpringBean(WebConst.SYSTEM_SERVICE);
//        final List<Setting> settingList = systemService.getSettings(from, count);
//        final int totalRecords = systemService.countAllSettings();
//
//        // анализируем общее количество страниц, чтоб их было больше чем запрошенная
//        analizeTotalPage(totalRecords);
//
//        // заполняем некоторые поля для постраничника
//        fillPagebleParams(from, count, settingList, totalRecords);
//
//        if (logger.isDebugEnabled()) {
//            logger.debug("Was fount '" + (settingList != null ? settingList.size() : "null") + "' settings");
//        }
//
//        return settingList;
        return null;
    }
}
